Use a single virtual machine for complex executions #617
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This avoids necessarily having to allocate a virtual machine when dealing with function objects and calls which involve other units or contexts, we simply just maintain the call stack inside of a single virtual machine that might refer to instruction pointers in differing contexts.
Benchmarks indicate that relatively simple cross unit/context function have a 20% performance bump (bench
external_functions
) on my machine due to this, most of it would be due to avoiding additional allocations which are needed to set up individual stacks for separate context calls: